//===- SaberCheckerAPI.cpp -- API for checkers-------------------------------//
//
//                     SVF: Static Value-Flow Analysis
//
// Copyright (C) <2013-2016>  <Yulei Sui>
// Copyright (C) <2013-2016>  <Jingling Xue>

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
//===----------------------------------------------------------------------===//

/*
 * SaberCheckerAPI.cpp
 *
 *  Created on: Apr 23, 2014
 *      Author: Yulei Sui
 */
#include "SABER/SaberCheckerAPI.h"
#include <stdio.h>

using namespace std;

SaberCheckerAPI* SaberCheckerAPI::ckAPI = NULL;

/// string and type pair
struct ei_pair {
	const char *n;
	SaberCheckerAPI::CHECKER_TYPE t;
};

//Each (name, type) pair will be inserted into the map.
//All entries of the same type must occur together (for error detection).
static const ei_pair ei_pairs[]= {
	{"alloc", SaberCheckerAPI::CK_ALLOC},
	{"alloc_check", SaberCheckerAPI::CK_ALLOC},
	{"alloc_clear", SaberCheckerAPI::CK_ALLOC},
	{"calloc", SaberCheckerAPI::CK_ALLOC},
	{"jpeg_alloc_huff_table", SaberCheckerAPI::CK_ALLOC},
	{"jpeg_alloc_quant_table", SaberCheckerAPI::CK_ALLOC},
	{"lalloc", SaberCheckerAPI::CK_ALLOC},
	{"lalloc_clear", SaberCheckerAPI::CK_ALLOC},
	{"malloc", SaberCheckerAPI::CK_ALLOC},
	{"nhalloc", SaberCheckerAPI::CK_ALLOC},
	{"oballoc", SaberCheckerAPI::CK_ALLOC},
	{"permalloc", SaberCheckerAPI::CK_ALLOC},
	{"png_create_info_struct", SaberCheckerAPI::CK_ALLOC},
	{"png_create_write_struct", SaberCheckerAPI::CK_ALLOC},
	{"safe_calloc", SaberCheckerAPI::CK_ALLOC},
	{"safe_malloc", SaberCheckerAPI::CK_ALLOC},
	{"safecalloc", SaberCheckerAPI::CK_ALLOC},
	{"safemalloc", SaberCheckerAPI::CK_ALLOC},
	{"safexcalloc", SaberCheckerAPI::CK_ALLOC},
	{"safexmalloc", SaberCheckerAPI::CK_ALLOC},
	{"savealloc", SaberCheckerAPI::CK_ALLOC},
	{"xalloc", SaberCheckerAPI::CK_ALLOC},
	{"xcalloc", SaberCheckerAPI::CK_ALLOC},
	{"xmalloc", SaberCheckerAPI::CK_ALLOC},
	{"SSL_CTX_new", SaberCheckerAPI::CK_ALLOC},
	{"SSL_new", SaberCheckerAPI::CK_ALLOC},

	{"cfree", SaberCheckerAPI::CK_FREE},
	{"free", SaberCheckerAPI::CK_FREE},
	{"free_all_mem", SaberCheckerAPI::CK_FREE},
	{"freeaddrinfo", SaberCheckerAPI::CK_FREE},
	{"gcry_mpi_release", SaberCheckerAPI::CK_FREE},
	{"gcry_sexp_release", SaberCheckerAPI::CK_FREE},
	{"globfree", SaberCheckerAPI::CK_FREE},
	{"nhfree", SaberCheckerAPI::CK_FREE},
	{"obstack_free", SaberCheckerAPI::CK_FREE},
	{"safe_cfree", SaberCheckerAPI::CK_FREE},
	{"safe_free", SaberCheckerAPI::CK_FREE},
	{"safefree", SaberCheckerAPI::CK_FREE},
	{"safexfree", SaberCheckerAPI::CK_FREE},
	{"sm_free", SaberCheckerAPI::CK_FREE},
	{"vim_free", SaberCheckerAPI::CK_FREE},
	{"xfree", SaberCheckerAPI::CK_FREE},
	{"SSL_CTX_free", SaberCheckerAPI::CK_FREE},
	{"SSL_free", SaberCheckerAPI::CK_FREE},

	{"fopen", SaberCheckerAPI::CK_FOPEN},
	{"\01_fopen", SaberCheckerAPI::CK_FOPEN},
	{"\01fopen64", SaberCheckerAPI::CK_FOPEN},
	{"\01readdir64", SaberCheckerAPI::CK_FOPEN},
	{"\01tmpfile64", SaberCheckerAPI::CK_FOPEN},
	{"fopen64", SaberCheckerAPI::CK_FOPEN},
	{"XOpenDisplay", SaberCheckerAPI::CK_FOPEN},
	{"XtOpenDisplay", SaberCheckerAPI::CK_FOPEN},
	{"fopencookie", SaberCheckerAPI::CK_FOPEN},
	{"popen", SaberCheckerAPI::CK_FOPEN},
	{"readdir", SaberCheckerAPI::CK_FOPEN},
	{"readdir64", SaberCheckerAPI::CK_FOPEN},
	{"gzdopen", SaberCheckerAPI::CK_FOPEN},
	{"iconv_open", SaberCheckerAPI::CK_FOPEN},
	{"tmpfile", SaberCheckerAPI::CK_FOPEN},
	{"tmpfile64", SaberCheckerAPI::CK_FOPEN},
	{"BIO_new_socket", SaberCheckerAPI::CK_FOPEN},
	{"gcry_md_open", SaberCheckerAPI::CK_FOPEN},
	{"gcry_cipher_open", SaberCheckerAPI::CK_FOPEN},


	{"fclose", SaberCheckerAPI::CK_FCLOSE},
	{"XCloseDisplay", SaberCheckerAPI::CK_FCLOSE},
	{"XtCloseDisplay", SaberCheckerAPI::CK_FCLOSE},
	{"__res_nclose", SaberCheckerAPI::CK_FCLOSE},
	{"pclose", SaberCheckerAPI::CK_FCLOSE},
	{"closedir", SaberCheckerAPI::CK_FCLOSE},
	{"dlclose", SaberCheckerAPI::CK_FCLOSE},
	{"gzclose", SaberCheckerAPI::CK_FCLOSE},
	{"iconv_close", SaberCheckerAPI::CK_FCLOSE},
	{"gcry_md_close", SaberCheckerAPI::CK_FCLOSE},
	{"gcry_cipher_close", SaberCheckerAPI::CK_FCLOSE},

	{"___alloc_bootmem", SaberCheckerAPI::CK_KALLOC},
	{"___alloc_bootmem_node", SaberCheckerAPI::CK_KALLOC},
	{"___alloc_bootmem_node_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"___alloc_bootmem_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_low", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_low_node", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_low_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_node", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_node_high", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_node_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_bootmem_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_filter", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_memory_core_early", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages_direct_compact", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages_direct_reclaim", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages_high_priority", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages_may_oom", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages_nodemask", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_pages_slowpath", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_percpu", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_percpu_gfp", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_reserved_percpu", SaberCheckerAPI::CK_KALLOC},
	{"__alloc_workqueue_key", SaberCheckerAPI::CK_KALLOC},
	{"__allocate_fw_buf", SaberCheckerAPI::CK_KALLOC},
	{"__blk_mq_alloc_request", SaberCheckerAPI::CK_KALLOC},
	{"__crypto_alloc_tfm", SaberCheckerAPI::CK_KALLOC},
	{"__d_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__do_krealloc", SaberCheckerAPI::CK_KALLOC},
	{"__earlyonly_bootmem_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__fuse_request_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__kmalloc", SaberCheckerAPI::CK_KALLOC},
	{"__kmalloc_node", SaberCheckerAPI::CK_KALLOC},
	{"__kmalloc_node_track_caller", SaberCheckerAPI::CK_KALLOC},
	{"__kmalloc_section_usemap", SaberCheckerAPI::CK_KALLOC},
	{"__kmalloc_track_caller", SaberCheckerAPI::CK_KALLOC},
	{"__krealloc", SaberCheckerAPI::CK_KALLOC},
	{"__page_cache_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__ring_buffer_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__scsi_alloc_queue", SaberCheckerAPI::CK_KALLOC},
	{"__sigqueue_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__slab_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__tty_alloc_driver", SaberCheckerAPI::CK_KALLOC},
	{"__vmalloc", SaberCheckerAPI::CK_KALLOC},
	{"__vmalloc_area_node", SaberCheckerAPI::CK_KALLOC},
	{"__vmalloc_node", SaberCheckerAPI::CK_KALLOC},
	{"__vmalloc_node_flags", SaberCheckerAPI::CK_KALLOC},
	{"__vmalloc_node_range", SaberCheckerAPI::CK_KALLOC},
	{"ablkcipher_request_alloc", SaberCheckerAPI::CK_KALLOC},
	{"aead_geniv_alloc", SaberCheckerAPI::CK_KALLOC},
	{"aead_request_alloc", SaberCheckerAPI::CK_KALLOC},
	{"aer_alloc_rpc", SaberCheckerAPI::CK_KALLOC},
	{"agp_alloc_bridge", SaberCheckerAPI::CK_KALLOC},
	{"agp_allocate_memory", SaberCheckerAPI::CK_KALLOC},
	{"agp_allocate_memory_wrap", SaberCheckerAPI::CK_KALLOC},
	{"agp_generic_alloc_by_type", SaberCheckerAPI::CK_KALLOC},
	{"agp_generic_alloc_page", SaberCheckerAPI::CK_KALLOC},
	{"agp_generic_alloc_user", SaberCheckerAPI::CK_KALLOC},
	{"ahash_request_alloc", SaberCheckerAPI::CK_KALLOC},
	{"alloc_aggr_kprobe", SaberCheckerAPI::CK_KALLOC},
	{"alloc_agpphysmem_i8xx", SaberCheckerAPI::CK_KALLOC},
	{"alloc_anon_inode", SaberCheckerAPI::CK_KALLOC},
	{"alloc_apertures", SaberCheckerAPI::CK_KALLOC},
	{"alloc_buddy_huge_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_buf", SaberCheckerAPI::CK_KALLOC},
	{"alloc_buffer_head", SaberCheckerAPI::CK_KALLOC},
	{"alloc_dcookie", SaberCheckerAPI::CK_KALLOC},
	{"alloc_desc", SaberCheckerAPI::CK_KALLOC},
	{"alloc_disk", SaberCheckerAPI::CK_KALLOC},
	{"alloc_disk_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_dr", SaberCheckerAPI::CK_KALLOC},
	{"alloc_elfnotes_buf", SaberCheckerAPI::CK_KALLOC},
	{"alloc_fdmem", SaberCheckerAPI::CK_KALLOC},
	{"alloc_fdtable", SaberCheckerAPI::CK_KALLOC},
	{"alloc_file", SaberCheckerAPI::CK_KALLOC},
	{"alloc_flex_gd", SaberCheckerAPI::CK_KALLOC},
	{"alloc_fresh_gigantic_page_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_fresh_huge_page_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_gigantic_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_huge_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_huge_page_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_huge_page_noerr", SaberCheckerAPI::CK_KALLOC},
	{"alloc_hugepage_vma", SaberCheckerAPI::CK_KALLOC},
	{"alloc_indirect", SaberCheckerAPI::CK_KALLOC},
	{"alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"alloc_insn_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_irq_and_cfg_at", SaberCheckerAPI::CK_KALLOC},
	{"alloc_irq_cfg", SaberCheckerAPI::CK_KALLOC},
	{"alloc_irq_pin_list", SaberCheckerAPI::CK_KALLOC},
	{"alloc_kmem_pages", SaberCheckerAPI::CK_KALLOC},
	{"alloc_kmem_pages_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_large_system_hash", SaberCheckerAPI::CK_KALLOC},
	{"alloc_low_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_low_pages", SaberCheckerAPI::CK_KALLOC},
	{"alloc_lvn", SaberCheckerAPI::CK_KALLOC},
	{"alloc_migrate_target", SaberCheckerAPI::CK_KALLOC},
	{"alloc_misplaced_dst_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_mm_slot", SaberCheckerAPI::CK_KALLOC},
	{"alloc_mnt_ns", SaberCheckerAPI::CK_KALLOC},
	{"alloc_msg", SaberCheckerAPI::CK_KALLOC},
	{"alloc_msi_entry", SaberCheckerAPI::CK_KALLOC},
	{"alloc_new_pmd", SaberCheckerAPI::CK_KALLOC},
	{"alloc_page_buffers", SaberCheckerAPI::CK_KALLOC},
	{"alloc_page_interleave", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages_current", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages_exact", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages_exact_nid", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages_exact_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pages_vma", SaberCheckerAPI::CK_KALLOC},
	{"alloc_part_info", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pci_root_info", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pcie_link_state", SaberCheckerAPI::CK_KALLOC},
	{"alloc_perf_context", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pgt_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pi_state", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pid", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pipe_info", SaberCheckerAPI::CK_KALLOC},
	{"alloc_posix_timer", SaberCheckerAPI::CK_KALLOC},
	{"alloc_pvd", SaberCheckerAPI::CK_KALLOC},
	{"alloc_read_gpt_entries", SaberCheckerAPI::CK_KALLOC},
	{"alloc_read_gpt_header", SaberCheckerAPI::CK_KALLOC},
	{"alloc_resource", SaberCheckerAPI::CK_KALLOC},
	{"alloc_rmap_item", SaberCheckerAPI::CK_KALLOC},
	{"alloc_rootdomain", SaberCheckerAPI::CK_KALLOC},
	{"alloc_sched_domains", SaberCheckerAPI::CK_KALLOC},
	{"alloc_sdesc", SaberCheckerAPI::CK_KALLOC},
	{"alloc_secdata", SaberCheckerAPI::CK_KALLOC},
	{"alloc_slab_page", SaberCheckerAPI::CK_KALLOC},
	{"alloc_stable_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_super", SaberCheckerAPI::CK_KALLOC},
	{"alloc_swap_info", SaberCheckerAPI::CK_KALLOC},
	{"alloc_symbol_cache", SaberCheckerAPI::CK_KALLOC},
	{"alloc_task_struct_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_tce_table", SaberCheckerAPI::CK_KALLOC},
	{"alloc_thread_info_node", SaberCheckerAPI::CK_KALLOC},
	{"alloc_trace_kprobe", SaberCheckerAPI::CK_KALLOC},
	{"alloc_trial_cpuset", SaberCheckerAPI::CK_KALLOC},
	{"alloc_tty_driver", SaberCheckerAPI::CK_KALLOC},
	{"alloc_tty_struct", SaberCheckerAPI::CK_KALLOC},
	{"alloc_uid", SaberCheckerAPI::CK_KALLOC},
	{"alloc_unbound_pwq", SaberCheckerAPI::CK_KALLOC},
	{"alloc_vfsmnt", SaberCheckerAPI::CK_KALLOC},
	{"alloc_vm_area", SaberCheckerAPI::CK_KALLOC},
	{"alloc_vmap_area", SaberCheckerAPI::CK_KALLOC},
	{"alloc_worker", SaberCheckerAPI::CK_KALLOC},
	{"alloc_workqueue_attrs", SaberCheckerAPI::CK_KALLOC},
	{"alloc_zeroed_user_highpage_movable", SaberCheckerAPI::CK_KALLOC},
	{"alloc_zspage", SaberCheckerAPI::CK_KALLOC},
	{"allocate_fake_cpuc", SaberCheckerAPI::CK_KALLOC},
	{"allocate_partitions", SaberCheckerAPI::CK_KALLOC},
	{"allocate_probes", SaberCheckerAPI::CK_KALLOC},
	{"allocate_shared_regs", SaberCheckerAPI::CK_KALLOC},
	{"allocate_slab", SaberCheckerAPI::CK_KALLOC},
	{"amd_alloc_nb", SaberCheckerAPI::CK_KALLOC},
	{"amd_uncore_alloc", SaberCheckerAPI::CK_KALLOC},
	{"anon_vma_alloc", SaberCheckerAPI::CK_KALLOC},
	{"anon_vma_chain_alloc", SaberCheckerAPI::CK_KALLOC},
	{"array_map_alloc", SaberCheckerAPI::CK_KALLOC},
	{"bdev_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"bio_alloc", SaberCheckerAPI::CK_KALLOC},
	{"bio_alloc_bioset", SaberCheckerAPI::CK_KALLOC},
	{"bio_alloc_map_data", SaberCheckerAPI::CK_KALLOC},
	{"bio_integrity_alloc", SaberCheckerAPI::CK_KALLOC},
	{"bio_kmalloc", SaberCheckerAPI::CK_KALLOC},
	{"blk_alloc_flush_queue", SaberCheckerAPI::CK_KALLOC},
	{"blk_alloc_queue", SaberCheckerAPI::CK_KALLOC},
	{"blk_alloc_queue_node", SaberCheckerAPI::CK_KALLOC},
	{"blk_init_allocated_queue", SaberCheckerAPI::CK_KALLOC},
	{"blk_mq_alloc_request", SaberCheckerAPI::CK_KALLOC},
	{"blkcg_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"blkg_alloc", SaberCheckerAPI::CK_KALLOC},
	{"bpf_prog_alloc", SaberCheckerAPI::CK_KALLOC},
	{"bpf_prog_realloc", SaberCheckerAPI::CK_KALLOC},
	{"bsg_alloc_command", SaberCheckerAPI::CK_KALLOC},
	{"bsg_alloc_device", SaberCheckerAPI::CK_KALLOC},
	{"bucket_table_alloc", SaberCheckerAPI::CK_KALLOC},
	{"bvec_alloc", SaberCheckerAPI::CK_KALLOC},
	{"calgary_alloc_coherent", SaberCheckerAPI::CK_KALLOC},
	{"cdev_alloc", SaberCheckerAPI::CK_KALLOC},
	{"cfq_find_alloc_queue", SaberCheckerAPI::CK_KALLOC},
	{"chainiv_alloc", SaberCheckerAPI::CK_KALLOC},
	{"cma_alloc", SaberCheckerAPI::CK_KALLOC},
	{"compaction_alloc", SaberCheckerAPI::CK_KALLOC},
	{"component_match_realloc", SaberCheckerAPI::CK_KALLOC},
	{"cpu_cgroup_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"cpuacct_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"cpufreq_policy_alloc", SaberCheckerAPI::CK_KALLOC},
	{"cpuset_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"create_kmalloc_cache", SaberCheckerAPI::CK_KALLOC},
	{"cred_alloc_blank", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_ablkcipher", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_aead", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_ahash", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_base", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_blkcipher", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_cipher", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_comp", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_hash", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_instance", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_instance2", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_pcomp", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_rng", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_shash", SaberCheckerAPI::CK_KALLOC},
	{"crypto_alloc_tfm", SaberCheckerAPI::CK_KALLOC},
	{"crypto_cbc_alloc", SaberCheckerAPI::CK_KALLOC},
	{"crypto_ecb_alloc", SaberCheckerAPI::CK_KALLOC},
	{"crypto_larval_alloc", SaberCheckerAPI::CK_KALLOC},
	{"d_alloc", SaberCheckerAPI::CK_KALLOC},
	{"d_alloc_name", SaberCheckerAPI::CK_KALLOC},
	{"d_alloc_pseudo", SaberCheckerAPI::CK_KALLOC},
	{"devcgroup_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"devm_input_allocate_device", SaberCheckerAPI::CK_KALLOC},
	{"devm_kmalloc", SaberCheckerAPI::CK_KALLOC},
	{"devm_kzalloc", SaberCheckerAPI::CK_KALLOC},
	{"devm_regmap_field_alloc", SaberCheckerAPI::CK_KALLOC},
	{"devres_alloc", SaberCheckerAPI::CK_KALLOC},
	{"dma_alloc_attrs", SaberCheckerAPI::CK_KALLOC},
	{"dma_alloc_from_contiguous", SaberCheckerAPI::CK_KALLOC},
	{"dma_generic_alloc_coherent", SaberCheckerAPI::CK_KALLOC},
	{"dma_pool_alloc", SaberCheckerAPI::CK_KALLOC},
	{"dmam_alloc_coherent", SaberCheckerAPI::CK_KALLOC},
	{"dmam_alloc_noncoherent", SaberCheckerAPI::CK_KALLOC},
	{"dmi_alloc", SaberCheckerAPI::CK_KALLOC},
	{"do_kimage_alloc_init", SaberCheckerAPI::CK_KALLOC},
	{"dquot_alloc", SaberCheckerAPI::CK_KALLOC},
	{"ecryptfs_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"elevator_alloc", SaberCheckerAPI::CK_KALLOC},
	{"encrypted_key_alloc", SaberCheckerAPI::CK_KALLOC},
	{"eseqiv_alloc", SaberCheckerAPI::CK_KALLOC},
	{"ext4_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"ext4_es_alloc_extent", SaberCheckerAPI::CK_KALLOC},
	{"ext4_kvmalloc", SaberCheckerAPI::CK_KALLOC},
	{"ext4_kvzalloc", SaberCheckerAPI::CK_KALLOC},
	{"fanotify_alloc_event", SaberCheckerAPI::CK_KALLOC},
	{"fasync_alloc", SaberCheckerAPI::CK_KALLOC},
	{"fat_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"fat_cache_alloc", SaberCheckerAPI::CK_KALLOC},
	{"find_alloc_undo", SaberCheckerAPI::CK_KALLOC},
	{"find_and_alloc_map", SaberCheckerAPI::CK_KALLOC},
	{"flex_array_alloc", SaberCheckerAPI::CK_KALLOC},
	{"framebuffer_alloc", SaberCheckerAPI::CK_KALLOC},
	{"fsnotify_alloc_group", SaberCheckerAPI::CK_KALLOC},
	{"fuse_alloc_forget", SaberCheckerAPI::CK_KALLOC},
	{"fuse_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"fuse_file_alloc", SaberCheckerAPI::CK_KALLOC},
	{"fuse_request_alloc", SaberCheckerAPI::CK_KALLOC},
	{"fuse_request_alloc_nofs", SaberCheckerAPI::CK_KALLOC},
	{"gart_alloc_coherent", SaberCheckerAPI::CK_KALLOC},
	{"gen_pool_dma_alloc", SaberCheckerAPI::CK_KALLOC},
	{"groups_alloc", SaberCheckerAPI::CK_KALLOC},
	{"htab_map_alloc", SaberCheckerAPI::CK_KALLOC},
	{"huge_pte_alloc", SaberCheckerAPI::CK_KALLOC},
	{"hugetlb_cgroup_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"hugetlbfs_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"hvc_alloc", SaberCheckerAPI::CK_KALLOC},
	{"i8xx_alloc_pages", SaberCheckerAPI::CK_KALLOC},
	{"ima_alloc_atfm", SaberCheckerAPI::CK_KALLOC},
	{"ima_alloc_pages", SaberCheckerAPI::CK_KALLOC},
	{"ima_alloc_tfm", SaberCheckerAPI::CK_KALLOC},
	{"input_allocate_device", SaberCheckerAPI::CK_KALLOC},
	{"intel_fake_agp_alloc_by_type", SaberCheckerAPI::CK_KALLOC},
	{"ioctx_alloc", SaberCheckerAPI::CK_KALLOC},
	{"ipc_alloc", SaberCheckerAPI::CK_KALLOC},
	{"ipc_rcu_alloc", SaberCheckerAPI::CK_KALLOC},
	{"irq_alloc_generic_chip", SaberCheckerAPI::CK_KALLOC},
	{"jbd2_alloc", SaberCheckerAPI::CK_KALLOC},
	{"jbd2_alloc_handle", SaberCheckerAPI::CK_KALLOC},
	{"jbd2_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"journal_alloc_journal_head", SaberCheckerAPI::CK_KALLOC},
	{"kcalloc", SaberCheckerAPI::CK_KALLOC},
	{"key_alloc", SaberCheckerAPI::CK_KALLOC},
	{"keyring_alloc", SaberCheckerAPI::CK_KALLOC},
	{"khugepaged_alloc_page", SaberCheckerAPI::CK_KALLOC},
	{"kimage_alloc_control_pages", SaberCheckerAPI::CK_KALLOC},
	{"kimage_alloc_crash_control_pages", SaberCheckerAPI::CK_KALLOC},
	{"kimage_alloc_normal_control_pages", SaberCheckerAPI::CK_KALLOC},
	{"kimage_alloc_page", SaberCheckerAPI::CK_KALLOC},
	{"kimage_alloc_pages", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_array", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_large", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_large_node", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_node", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_order", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_order_trace", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_parameter", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_section_memmap", SaberCheckerAPI::CK_KALLOC},
	{"kmalloc_slab", SaberCheckerAPI::CK_KALLOC},
	{"kmem_cache_alloc", SaberCheckerAPI::CK_KALLOC},
	{"kmem_cache_alloc_node", SaberCheckerAPI::CK_KALLOC},
	{"kmem_cache_alloc_node_trace", SaberCheckerAPI::CK_KALLOC},
	{"kmem_cache_alloc_trace", SaberCheckerAPI::CK_KALLOC},
	{"kmem_cache_zalloc", SaberCheckerAPI::CK_KALLOC},
	{"krealloc", SaberCheckerAPI::CK_KALLOC},
	{"kzalloc", SaberCheckerAPI::CK_KALLOC},
	{"kzalloc_node", SaberCheckerAPI::CK_KALLOC},
	{"layout_and_allocate", SaberCheckerAPI::CK_KALLOC},
	{"lease_alloc", SaberCheckerAPI::CK_KALLOC},
	{"locks_alloc_lock", SaberCheckerAPI::CK_KALLOC},
	{"make_alloc_exact", SaberCheckerAPI::CK_KALLOC},
	{"mb_cache_entry_alloc", SaberCheckerAPI::CK_KALLOC},
	{"mem_cgroup_alloc", SaberCheckerAPI::CK_KALLOC},
	{"mem_cgroup_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_internal", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_low_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_node", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_node_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_try_nid", SaberCheckerAPI::CK_KALLOC},
	{"memblock_virt_alloc_try_nid_nopanic", SaberCheckerAPI::CK_KALLOC},
	{"mempool_alloc", SaberCheckerAPI::CK_KALLOC},
	{"mempool_alloc_pages", SaberCheckerAPI::CK_KALLOC},
	{"mempool_alloc_pages_isa", SaberCheckerAPI::CK_KALLOC},
	{"mempool_alloc_slab", SaberCheckerAPI::CK_KALLOC},
	{"mempool_kmalloc", SaberCheckerAPI::CK_KALLOC},
	{"mm_alloc", SaberCheckerAPI::CK_KALLOC},
	{"module_alloc", SaberCheckerAPI::CK_KALLOC},
	{"module_alloc_update_bounds", SaberCheckerAPI::CK_KALLOC},
	{"mpage_alloc", SaberCheckerAPI::CK_KALLOC},
	{"mpi_alloc", SaberCheckerAPI::CK_KALLOC},
	{"mpi_alloc_limb_space", SaberCheckerAPI::CK_KALLOC},
	{"msrs_alloc", SaberCheckerAPI::CK_KALLOC},
	{"page_cache_alloc_cold", SaberCheckerAPI::CK_KALLOC},
	{"page_cache_alloc_readahead", SaberCheckerAPI::CK_KALLOC},
	{"pci_alloc_bus", SaberCheckerAPI::CK_KALLOC},
	{"pci_alloc_child_bus", SaberCheckerAPI::CK_KALLOC},
	{"pci_alloc_dev", SaberCheckerAPI::CK_KALLOC},
	{"pci_alloc_host_bridge", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_alloc", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_alloc_alloc_info", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_alloc_bootmem", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_alloc_chunk", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_build_alloc_info", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_fc_alloc", SaberCheckerAPI::CK_KALLOC},
	{"pcpu_mem_zalloc", SaberCheckerAPI::CK_KALLOC},
	{"perf_cgroup_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"perf_event_alloc", SaberCheckerAPI::CK_KALLOC},
	{"perf_mmap_alloc_page", SaberCheckerAPI::CK_KALLOC},
	{"pgd_alloc", SaberCheckerAPI::CK_KALLOC},
	{"pidlist_allocate", SaberCheckerAPI::CK_KALLOC},
	{"platform_device_alloc", SaberCheckerAPI::CK_KALLOC},
	{"pmd_alloc", SaberCheckerAPI::CK_KALLOC},
	{"pmd_alloc.2189", SaberCheckerAPI::CK_KALLOC},
	{"pmd_alloc.2450", SaberCheckerAPI::CK_KALLOC},
	{"pmd_alloc.3330", SaberCheckerAPI::CK_KALLOC},
	{"pmd_alloc_one", SaberCheckerAPI::CK_KALLOC},
	{"pool_alloc_page", SaberCheckerAPI::CK_KALLOC},
	{"posix_acl_alloc", SaberCheckerAPI::CK_KALLOC},
	{"proc_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"pte_alloc_one", SaberCheckerAPI::CK_KALLOC},
	{"pte_alloc_one_kernel", SaberCheckerAPI::CK_KALLOC},
	{"pud_alloc", SaberCheckerAPI::CK_KALLOC},
	{"pud_alloc_one", SaberCheckerAPI::CK_KALLOC},
	{"rb_alloc", SaberCheckerAPI::CK_KALLOC},
	{"rb_allocate_cpu_buffer", SaberCheckerAPI::CK_KALLOC},
	{"regcache_rbtree_node_alloc", SaberCheckerAPI::CK_KALLOC},
	{"regmap_field_alloc", SaberCheckerAPI::CK_KALLOC},
	{"relay_alloc_buf", SaberCheckerAPI::CK_KALLOC},
	{"relay_alloc_page_array", SaberCheckerAPI::CK_KALLOC},
	{"resv_map_alloc", SaberCheckerAPI::CK_KALLOC},
	{"ring_buffer_alloc_read_page", SaberCheckerAPI::CK_KALLOC},
	{"scsi_alloc_host_cmd_pool", SaberCheckerAPI::CK_KALLOC},
	{"scsi_alloc_queue", SaberCheckerAPI::CK_KALLOC},
	{"scsi_alloc_sdev", SaberCheckerAPI::CK_KALLOC},
	{"scsi_alloc_target", SaberCheckerAPI::CK_KALLOC},
	{"scsi_host_alloc", SaberCheckerAPI::CK_KALLOC},
	{"scsi_host_alloc_command", SaberCheckerAPI::CK_KALLOC},
	{"scsi_mq_alloc_queue", SaberCheckerAPI::CK_KALLOC},
	{"scsi_sg_alloc", SaberCheckerAPI::CK_KALLOC},
	{"sdev_evt_alloc", SaberCheckerAPI::CK_KALLOC},
	{"seq_buf_alloc", SaberCheckerAPI::CK_KALLOC},
	{"sg_alloc", SaberCheckerAPI::CK_KALLOC},
	{"sg_kmalloc", SaberCheckerAPI::CK_KALLOC},
	{"shash_alloc_instance", SaberCheckerAPI::CK_KALLOC},
	{"shmem_alloc_inode", SaberCheckerAPI::CK_KALLOC},
	{"shmem_alloc_page", SaberCheckerAPI::CK_KALLOC},
	{"sigqueue_alloc", SaberCheckerAPI::CK_KALLOC},
	{"simple_xattr_alloc", SaberCheckerAPI::CK_KALLOC},
	{"skcipher_geniv_alloc", SaberCheckerAPI::CK_KALLOC},
	{"slab_alloc", SaberCheckerAPI::CK_KALLOC},
	{"slab_alloc_node", SaberCheckerAPI::CK_KALLOC},
	{"slab_pre_alloc_hook", SaberCheckerAPI::CK_KALLOC},
	{"sp_alloc", SaberCheckerAPI::CK_KALLOC},
	{"sparse_early_usemaps_alloc_pgdat_section", SaberCheckerAPI::CK_KALLOC},
	{"sparse_index_alloc", SaberCheckerAPI::CK_KALLOC},
	{"swiotlb_alloc_coherent", SaberCheckerAPI::CK_KALLOC},
	{"trusted_options_alloc", SaberCheckerAPI::CK_KALLOC},
	{"trusted_payload_alloc", SaberCheckerAPI::CK_KALLOC},
	{"tty_buffer_alloc", SaberCheckerAPI::CK_KALLOC},
	{"uncore_alloc_box", SaberCheckerAPI::CK_KALLOC},
	{"vb_alloc", SaberCheckerAPI::CK_KALLOC},
	{"vc_deallocate", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc_32", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc_32_user", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc_exec", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc_node", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc_to_page", SaberCheckerAPI::CK_KALLOC},
	{"vmalloc_user", SaberCheckerAPI::CK_KALLOC},
	{"vmemmap_alloc_block", SaberCheckerAPI::CK_KALLOC},
	{"vmemmap_alloc_block_buf", SaberCheckerAPI::CK_KALLOC},
	{"vzalloc", SaberCheckerAPI::CK_KALLOC},
	{"vzalloc_node", SaberCheckerAPI::CK_KALLOC},
	{"x86_swiotlb_alloc_coherent", SaberCheckerAPI::CK_KALLOC},
	{"zswap_entry_cache_alloc", SaberCheckerAPI::CK_KALLOC},
	{"freezer_css_alloc", SaberCheckerAPI::CK_KALLOC},
	{"__get_free_pages", SaberCheckerAPI::CK_KALLOC},
	{"devm_get_free_pages", SaberCheckerAPI::CK_KALLOC},
	{"fget", SaberCheckerAPI::CK_KALLOC},
	{"new_handle", SaberCheckerAPI::CK_KALLOC},
	{"new_inode", SaberCheckerAPI::CK_KALLOC},
	{"kobject_create", SaberCheckerAPI::CK_KALLOC},
	{"alloc_ldt_struct", SaberCheckerAPI::CK_KALLOC},
	{"prepare_creds", SaberCheckerAPI::CK_KALLOC},
	{"sg_add_request", SaberCheckerAPI::CK_KALLOC},
	{"__request_region", SaberCheckerAPI::CK_KALLOC},
	{"sget", SaberCheckerAPI::CK_KALLOC},
	{"__proc_create", SaberCheckerAPI::CK_KALLOC},

	{"__bio_free", SaberCheckerAPI::CK_KFREE},
	{"__blk_queue_free_tags", SaberCheckerAPI::CK_KFREE},
	{"__bpf_prog_free", SaberCheckerAPI::CK_KFREE},
	{"__cpufreq_stats_free_table", SaberCheckerAPI::CK_KFREE},
	{"__d_free", SaberCheckerAPI::CK_KFREE},
	{"__d_free_external", SaberCheckerAPI::CK_KFREE},
	{"__dquot_free_space", SaberCheckerAPI::CK_KFREE},
	{"__free_event", SaberCheckerAPI::CK_KFREE},
	{"__free_fdtable", SaberCheckerAPI::CK_KFREE},
	{"__free_filter", SaberCheckerAPI::CK_KFREE},
	{"__free_irq", SaberCheckerAPI::CK_KFREE},
	{"__free_kmem_pages", SaberCheckerAPI::CK_KFREE},
	{"__free_pages", SaberCheckerAPI::CK_KFREE},
	{"__free_pages_bootmem", SaberCheckerAPI::CK_KFREE},
	{"__free_pages_memory", SaberCheckerAPI::CK_KFREE},
	{"__free_pages_ok", SaberCheckerAPI::CK_KFREE},
	{"__free_percpu_irq", SaberCheckerAPI::CK_KFREE},
	{"__free_pred_stack", SaberCheckerAPI::CK_KFREE},
	{"__free_preds", SaberCheckerAPI::CK_KFREE},
	{"__free_reserved_page", SaberCheckerAPI::CK_KFREE},
	{"__free_subsystem_filter", SaberCheckerAPI::CK_KFREE},
	{"__free_vmap_area", SaberCheckerAPI::CK_KFREE},
	{"__freed_request", SaberCheckerAPI::CK_KFREE},
	{"__fw_free_buf", SaberCheckerAPI::CK_KFREE},
	{"__gpiod_free", SaberCheckerAPI::CK_KFREE},
	{"__kfifo_free", SaberCheckerAPI::CK_KFREE},
	{"__kfree_section_memmap", SaberCheckerAPI::CK_KFREE},
	{"__mem_cgroup_free", SaberCheckerAPI::CK_KFREE},
	{"__memblock_free_early", SaberCheckerAPI::CK_KFREE},
	{"__memblock_free_late", SaberCheckerAPI::CK_KFREE},
	{"__mod_zone_freepage_state", SaberCheckerAPI::CK_KFREE},
	{"__online_page_free", SaberCheckerAPI::CK_KFREE},
	{"__sdt_free", SaberCheckerAPI::CK_KFREE},
	{"__sigqueue_free", SaberCheckerAPI::CK_KFREE},
	{"__try_to_free_cp_buf", SaberCheckerAPI::CK_KFREE},
	{"__wait_on_freeing_inode", SaberCheckerAPI::CK_KFREE},
	{"_free_event", SaberCheckerAPI::CK_KFREE},
	{"ablkcipher_request_free", SaberCheckerAPI::CK_KFREE},
	{"acpi_gpiochip_free_interrupts", SaberCheckerAPI::CK_KFREE},
	{"aead_geniv_free", SaberCheckerAPI::CK_KFREE},
	{"aead_request_free", SaberCheckerAPI::CK_KFREE},
	{"agp_free_memory", SaberCheckerAPI::CK_KFREE},
	{"agp_free_memory_wrap", SaberCheckerAPI::CK_KFREE},
	{"agp_free_page_array", SaberCheckerAPI::CK_KFREE},
	{"agp_generic_free_by_type", SaberCheckerAPI::CK_KFREE},
	{"agp_generic_free_gatt_table", SaberCheckerAPI::CK_KFREE},
	{"ahash_free_instance", SaberCheckerAPI::CK_KFREE},
	{"ahash_request_free", SaberCheckerAPI::CK_KFREE},
	{"aio_free_ring", SaberCheckerAPI::CK_KFREE},
	{"anon_vma_chain_free", SaberCheckerAPI::CK_KFREE},
	{"anon_vma_free", SaberCheckerAPI::CK_KFREE},
	{"arch_free_page", SaberCheckerAPI::CK_KFREE},
	{"argv_free", SaberCheckerAPI::CK_KFREE},
	{"array_map_free", SaberCheckerAPI::CK_KFREE},
	{"asymmetric_key_free_preparse", SaberCheckerAPI::CK_KFREE},
	{"asymmetric_key_match_free", SaberCheckerAPI::CK_KFREE},
	{"ats_free_one", SaberCheckerAPI::CK_KFREE},
	{"audit_free", SaberCheckerAPI::CK_KFREE},
	{"autogroup_free", SaberCheckerAPI::CK_KFREE},
	{"big_key_free_preparse", SaberCheckerAPI::CK_KFREE},
	{"bio_free", SaberCheckerAPI::CK_KFREE},
	{"bio_integrity_free", SaberCheckerAPI::CK_KFREE},
	{"bioset_free", SaberCheckerAPI::CK_KFREE},
	{"bioset_integrity_free", SaberCheckerAPI::CK_KFREE},
	{"bitmap_find_free_region", SaberCheckerAPI::CK_KFREE},
	//{"blk_free_devt", SaberCheckerAPI::CK_KFREE},
	{"blk_free_flush_queue", SaberCheckerAPI::CK_KFREE},
	{"blk_free_queue_rcu", SaberCheckerAPI::CK_KFREE},
	{"blk_free_tags", SaberCheckerAPI::CK_KFREE},
	{"blk_mq_free_bitmap", SaberCheckerAPI::CK_KFREE},
	{"blk_mq_free_queue", SaberCheckerAPI::CK_KFREE},
	{"blk_mq_free_request", SaberCheckerAPI::CK_KFREE},
	{"blk_mq_free_tag_set", SaberCheckerAPI::CK_KFREE},
	{"blk_mq_free_tags", SaberCheckerAPI::CK_KFREE},
	{"blk_mq_has_free_tags", SaberCheckerAPI::CK_KFREE},
	{"blk_queue_free_tags", SaberCheckerAPI::CK_KFREE},
	{"blkcg_css_free", SaberCheckerAPI::CK_KFREE},
	{"blkg_free", SaberCheckerAPI::CK_KFREE},
	{"bpf_jit_free", SaberCheckerAPI::CK_KFREE},
	{"bpf_map_free_deferred", SaberCheckerAPI::CK_KFREE},
	{"bpf_prog_free", SaberCheckerAPI::CK_KFREE},
	{"bpf_prog_free_deferred", SaberCheckerAPI::CK_KFREE},
	{"bpf_prog_unlock_free", SaberCheckerAPI::CK_KFREE},
	{"bsg_free_command", SaberCheckerAPI::CK_KFREE},
	{"bt_free", SaberCheckerAPI::CK_KFREE},
	{"bt_has_free_tags", SaberCheckerAPI::CK_KFREE},
	{"bucket_table_free", SaberCheckerAPI::CK_KFREE},
	{"buffer_freed", SaberCheckerAPI::CK_KFREE},
	{"calgary_free_bus", SaberCheckerAPI::CK_KFREE},
	{"call_usermodehelper_freeinfo", SaberCheckerAPI::CK_KFREE},
	{"cap_cred_free", SaberCheckerAPI::CK_KFREE},
	{"cap_file_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_inode_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_key_free", SaberCheckerAPI::CK_KFREE},
	{"cap_msg_msg_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_msg_queue_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_sb_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_sem_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_shm_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_sk_free_security", SaberCheckerAPI::CK_KFREE},
	{"cap_task_free", SaberCheckerAPI::CK_KFREE},
	{"cap_tun_dev_free_security", SaberCheckerAPI::CK_KFREE},
	{"cgroup_free_root", SaberCheckerAPI::CK_KFREE},
	{"chainiv_free", SaberCheckerAPI::CK_KFREE},
	{"check_free_space", SaberCheckerAPI::CK_KFREE},
	{"clear_buffer_freed", SaberCheckerAPI::CK_KFREE},
	{"cluster_is_free", SaberCheckerAPI::CK_KFREE},
	{"cmdline_parts_free", SaberCheckerAPI::CK_KFREE},
	{"compaction_free", SaberCheckerAPI::CK_KFREE},
	{"con_free_unimap", SaberCheckerAPI::CK_KFREE},
	{"count_free", SaberCheckerAPI::CK_KFREE},
	{"cpu_cgroup_css_free", SaberCheckerAPI::CK_KFREE},
	{"cpuacct_css_free", SaberCheckerAPI::CK_KFREE},
	{"cpufreq_policy_free", SaberCheckerAPI::CK_KFREE},
	{"cpufreq_stats_free_table", SaberCheckerAPI::CK_KFREE},
	{"cpuidle_free_state_kobj", SaberCheckerAPI::CK_KFREE},
	{"cpuset_css_free", SaberCheckerAPI::CK_KFREE},
	{"crash_free_reserved_phys_range", SaberCheckerAPI::CK_KFREE},
	{"crypto_cbc_free", SaberCheckerAPI::CK_KFREE},
	{"crypto_ecb_free", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_ablkcipher", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_aead", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_ahash", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_blkcipher", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_cipher", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_comp", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_hash", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_pcomp", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_rng", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_shash", SaberCheckerAPI::CK_KFREE},
	{"crypto_free_tfm", SaberCheckerAPI::CK_KFREE},
	{"css_free_rcu_fn", SaberCheckerAPI::CK_KFREE},
	{"css_free_work_fn", SaberCheckerAPI::CK_KFREE},
	{"ddebug_table_free", SaberCheckerAPI::CK_KFREE},
	{"debug_check_no_locks_freed", SaberCheckerAPI::CK_KFREE},
	{"debug_check_no_obj_freed", SaberCheckerAPI::CK_KFREE},
	{"delayacct_tsk_free", SaberCheckerAPI::CK_KFREE},
	{"delayed_free", SaberCheckerAPI::CK_KFREE},
	{"delayed_free_pidns", SaberCheckerAPI::CK_KFREE},
	{"delayed_free_vfsmnt", SaberCheckerAPI::CK_KFREE},
	{"dentry_free", SaberCheckerAPI::CK_KFREE},
	{"devcgroup_css_free", SaberCheckerAPI::CK_KFREE},
	{"devm_free_pages", SaberCheckerAPI::CK_KFREE},
	{"devm_gpio_free", SaberCheckerAPI::CK_KFREE},
	{"devres_free", SaberCheckerAPI::CK_KFREE},
	{"dissolve_free_huge_page", SaberCheckerAPI::CK_KFREE},
	{"dma_common_free_remap", SaberCheckerAPI::CK_KFREE},
	{"dnotify_free_mark", SaberCheckerAPI::CK_KFREE},
	{"dquot_free_block", SaberCheckerAPI::CK_KFREE},
	{"dquot_free_inode", SaberCheckerAPI::CK_KFREE},
	{"dquot_free_reserved_space", SaberCheckerAPI::CK_KFREE},
	{"dquot_free_space", SaberCheckerAPI::CK_KFREE},
	{"dquot_free_space_nodirty", SaberCheckerAPI::CK_KFREE},
	{"ecryptfs_acquire_free_msg_ctx", SaberCheckerAPI::CK_KFREE},
	{"ecryptfs_dentry_free_rcu", SaberCheckerAPI::CK_KFREE},
	{"ecryptfs_msg_ctx_alloc_to_free", SaberCheckerAPI::CK_KFREE},
	{"ecryptfs_msg_ctx_free_to_alloc", SaberCheckerAPI::CK_KFREE},
	{"encrypted_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"ep_free", SaberCheckerAPI::CK_KFREE},
	{"epi_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"eseqiv_free", SaberCheckerAPI::CK_KFREE},
	{"evdev_free", SaberCheckerAPI::CK_KFREE},
	{"eventfd_free", SaberCheckerAPI::CK_KFREE},
	{"eventfd_free_ctx", SaberCheckerAPI::CK_KFREE},
	{"ext4_claim_free_clusters", SaberCheckerAPI::CK_KFREE},
	{"ext4_count_free", SaberCheckerAPI::CK_KFREE},
	{"ext4_count_free_clusters", SaberCheckerAPI::CK_KFREE},
	{"ext4_count_free_inodes", SaberCheckerAPI::CK_KFREE},
	{"ext4_free_blocks_count", SaberCheckerAPI::CK_KFREE},
	{"ext4_free_blocks_count_set", SaberCheckerAPI::CK_KFREE},
	{"ext4_has_free_clusters", SaberCheckerAPI::CK_KFREE},
	{"ext4_htree_free_dir_info", SaberCheckerAPI::CK_KFREE},
	{"ext4_print_free_blocks", SaberCheckerAPI::CK_KFREE},
	{"ext4_trim_all_free", SaberCheckerAPI::CK_KFREE},
	{"fanotify_free_event", SaberCheckerAPI::CK_KFREE},
	{"fanotify_free_group_priv", SaberCheckerAPI::CK_KFREE},
	{"fanotify_free_mark", SaberCheckerAPI::CK_KFREE},
	{"fasync_free", SaberCheckerAPI::CK_KFREE},
	{"fasync_free_rcu", SaberCheckerAPI::CK_KFREE},
	{"fat_cache_free", SaberCheckerAPI::CK_KFREE},
	{"fat_count_free_clusters", SaberCheckerAPI::CK_KFREE},
	{"fat_free", SaberCheckerAPI::CK_KFREE},
	{"fat_free_clusters", SaberCheckerAPI::CK_KFREE},
	{"fbcon_free_font", SaberCheckerAPI::CK_KFREE},
	{"file_free", SaberCheckerAPI::CK_KFREE},
	{"file_free_rcu", SaberCheckerAPI::CK_KFREE},
	{"find_free_bus_resource", SaberCheckerAPI::CK_KFREE},
	{"firmware_free_data", SaberCheckerAPI::CK_KFREE},
	{"flex_array_free", SaberCheckerAPI::CK_KFREE},
	{"flex_array_free_parts", SaberCheckerAPI::CK_KFREE},
	{"fpu_free", SaberCheckerAPI::CK_KFREE},
	{"free_aggr_kprobe", SaberCheckerAPI::CK_KFREE},
	{"free_area_init", SaberCheckerAPI::CK_KFREE},
	{"free_area_init_nodes", SaberCheckerAPI::CK_KFREE},
	{"free_arg_page", SaberCheckerAPI::CK_KFREE},
	{"free_arg_pages", SaberCheckerAPI::CK_KFREE},
	{"free_bitfield_fetch_param", SaberCheckerAPI::CK_KFREE},
	{"free_bootmem_node", SaberCheckerAPI::CK_KFREE},
	{"free_bprm", SaberCheckerAPI::CK_KFREE},
	{"free_buf", SaberCheckerAPI::CK_KFREE},
	{"free_buffer_head", SaberCheckerAPI::CK_KFREE},
	{"free_buffer_page", SaberCheckerAPI::CK_KFREE},
	{"free_cgrp_cset_links", SaberCheckerAPI::CK_KFREE},
	{"free_compound_page", SaberCheckerAPI::CK_KFREE},
	{"free_copy", SaberCheckerAPI::CK_KFREE},
	{"free_cpumask_var", SaberCheckerAPI::CK_KFREE},
	{"free_dcookie", SaberCheckerAPI::CK_KFREE},
	{"free_deref_fetch_param", SaberCheckerAPI::CK_KFREE},
	{"free_event", SaberCheckerAPI::CK_KFREE},
	{"free_event_filter", SaberCheckerAPI::CK_KFREE},
	{"free_event_rcu", SaberCheckerAPI::CK_KFREE},
	{"free_fair_sched_group", SaberCheckerAPI::CK_KFREE},
	{"free_fake_cpuc", SaberCheckerAPI::CK_KFREE},
	{"free_fdtable_rcu", SaberCheckerAPI::CK_KFREE},
	{"free_flex_gd", SaberCheckerAPI::CK_KFREE},
	{"free_fs_struct", SaberCheckerAPI::CK_KFREE},
	{"free_gigantic_page", SaberCheckerAPI::CK_KFREE},
	{"free_hot_cold_page", SaberCheckerAPI::CK_KFREE},
	{"free_hot_cold_page_list", SaberCheckerAPI::CK_KFREE},
	{"free_huge_page", SaberCheckerAPI::CK_KFREE},
	{"free_init_pages", SaberCheckerAPI::CK_KFREE},
	{"free_inode_nonrcu", SaberCheckerAPI::CK_KFREE},
	{"free_insn_page", SaberCheckerAPI::CK_KFREE},
	{"free_insn_slot", SaberCheckerAPI::CK_KFREE},
	{"free_ioctx", SaberCheckerAPI::CK_KFREE},
	{"free_ioctx_reqs", SaberCheckerAPI::CK_KFREE},
	{"free_ioctx_users", SaberCheckerAPI::CK_KFREE},
	{"free_ipc_ns", SaberCheckerAPI::CK_KFREE},
	{"free_irq_cfg", SaberCheckerAPI::CK_KFREE},
	{"free_kclist_ents", SaberCheckerAPI::CK_KFREE},
	{"free_kmem_cache_nodes", SaberCheckerAPI::CK_KFREE},
	{"free_link", SaberCheckerAPI::CK_KFREE},
	{"free_link_state", SaberCheckerAPI::CK_KFREE},
	{"free_list", SaberCheckerAPI::CK_KFREE},
	{"free_loc_track", SaberCheckerAPI::CK_KFREE},
	{"free_map_bootmem", SaberCheckerAPI::CK_KFREE},
	{"free_masks", SaberCheckerAPI::CK_KFREE},
	{"free_mem_cgroup_per_zone_info", SaberCheckerAPI::CK_KFREE},
	{"free_mm_slot", SaberCheckerAPI::CK_KFREE},
	{"free_mnt_ns", SaberCheckerAPI::CK_KFREE},
	{"free_modinfo", SaberCheckerAPI::CK_KFREE},
	{"free_modinfo_srcversion", SaberCheckerAPI::CK_KFREE},
	{"free_modinfo_version", SaberCheckerAPI::CK_KFREE},
	{"free_modprobe_argv", SaberCheckerAPI::CK_KFREE},
	{"free_module", SaberCheckerAPI::CK_KFREE},
	{"free_module_param_attrs", SaberCheckerAPI::CK_KFREE},
	{"free_msg", SaberCheckerAPI::CK_KFREE},
	{"free_msi_irqs", SaberCheckerAPI::CK_KFREE},
	{"free_notes_attrs", SaberCheckerAPI::CK_KFREE},
	{"free_nsproxy", SaberCheckerAPI::CK_KFREE},
	{"free_optinsn_slot", SaberCheckerAPI::CK_KFREE},
	{"free_page_and_swap_cache", SaberCheckerAPI::CK_KFREE},
	{"free_pages_and_swap_cache", SaberCheckerAPI::CK_KFREE},
	{"free_pages_check", SaberCheckerAPI::CK_KFREE},
	{"free_pages_exact", SaberCheckerAPI::CK_KFREE},
	{"free_pages_prepare", SaberCheckerAPI::CK_KFREE},
	{"free_pagetable", SaberCheckerAPI::CK_KFREE},
	{"free_part_info", SaberCheckerAPI::CK_KFREE},
	{"free_part_stats", SaberCheckerAPI::CK_KFREE},
	{"free_partitions", SaberCheckerAPI::CK_KFREE},
	{"free_percpu", SaberCheckerAPI::CK_KFREE},
	{"free_percpu_irq", SaberCheckerAPI::CK_KFREE},
	//{"free_pfn_range", SaberCheckerAPI::CK_KFREE}, causes an error 
	{"free_pgd_range", SaberCheckerAPI::CK_KFREE},
	{"free_pgtables", SaberCheckerAPI::CK_KFREE},
	{"free_pi_state", SaberCheckerAPI::CK_KFREE},
	{"free_pid", SaberCheckerAPI::CK_KFREE},
	{"free_pid_ns", SaberCheckerAPI::CK_KFREE},
	{"free_pidmap", SaberCheckerAPI::CK_KFREE},
	{"free_pipe_info", SaberCheckerAPI::CK_KFREE},
	{"free_pmds", SaberCheckerAPI::CK_KFREE},
	{"free_pmu_context", SaberCheckerAPI::CK_KFREE},
	{"free_poll_entry", SaberCheckerAPI::CK_KFREE},
	{"free_proc_entry", SaberCheckerAPI::CK_KFREE},
	{"free_rb_tree_fname", SaberCheckerAPI::CK_KFREE},
	{"free_reserved_page", SaberCheckerAPI::CK_KFREE},
	{"free_resource", SaberCheckerAPI::CK_KFREE},
	{"free_rmap_item", SaberCheckerAPI::CK_KFREE},
	{"free_rootdomain", SaberCheckerAPI::CK_KFREE},
	{"free_rp_inst", SaberCheckerAPI::CK_KFREE},
	{"free_rt_sched_group", SaberCheckerAPI::CK_KFREE},
	{"free_saved_cmdlines_buffer", SaberCheckerAPI::CK_KFREE},
	{"free_sched_domain", SaberCheckerAPI::CK_KFREE},
	{"free_sched_domains", SaberCheckerAPI::CK_KFREE},
	{"free_sched_group", SaberCheckerAPI::CK_KFREE},
	{"free_sched_group_rcu", SaberCheckerAPI::CK_KFREE},
	{"free_sched_groups", SaberCheckerAPI::CK_KFREE},
	{"free_secdata", SaberCheckerAPI::CK_KFREE},
	{"free_sect_attrs", SaberCheckerAPI::CK_KFREE},
	{"free_section_usemap", SaberCheckerAPI::CK_KFREE},
	{"free_signal_struct", SaberCheckerAPI::CK_KFREE},
	{"free_stable_node", SaberCheckerAPI::CK_KFREE},
	{"free_states", SaberCheckerAPI::CK_KFREE},
	{"free_subpart", SaberCheckerAPI::CK_KFREE},
	{"free_swap_cache", SaberCheckerAPI::CK_KFREE},
	{"free_swap_count_continuations", SaberCheckerAPI::CK_KFREE},
	{"free_symbol_cache", SaberCheckerAPI::CK_KFREE},
	{"free_task", SaberCheckerAPI::CK_KFREE},
	{"free_task_struct", SaberCheckerAPI::CK_KFREE},
	{"free_tce_table", SaberCheckerAPI::CK_KFREE},
	{"free_thread_info", SaberCheckerAPI::CK_KFREE},
	{"free_thread_xstate", SaberCheckerAPI::CK_KFREE},
	{"free_trace_buffer", SaberCheckerAPI::CK_KFREE},
	{"free_trace_buffers", SaberCheckerAPI::CK_KFREE},
	{"free_trace_kprobe", SaberCheckerAPI::CK_KFREE},
	{"free_transition_pgtable", SaberCheckerAPI::CK_KFREE},
	{"free_trial_cpuset", SaberCheckerAPI::CK_KFREE},
	{"free_tty_struct", SaberCheckerAPI::CK_KFREE},
	{"free_uid", SaberCheckerAPI::CK_KFREE},
	{"free_unbound_pwq", SaberCheckerAPI::CK_KFREE},
	{"free_unmap_vmap_area", SaberCheckerAPI::CK_KFREE},
	{"free_unmap_vmap_area_noflush", SaberCheckerAPI::CK_KFREE},
	{"free_used_maps", SaberCheckerAPI::CK_KFREE},
	{"free_user", SaberCheckerAPI::CK_KFREE},
	{"free_user_ns", SaberCheckerAPI::CK_KFREE},
	{"free_uts_ns", SaberCheckerAPI::CK_KFREE},
	{"free_vfsmnt", SaberCheckerAPI::CK_KFREE},
	{"free_vm_area", SaberCheckerAPI::CK_KFREE},
	{"free_vmap_area", SaberCheckerAPI::CK_KFREE},
	{"free_vmap_area_noflush", SaberCheckerAPI::CK_KFREE},
	{"free_vmap_block", SaberCheckerAPI::CK_KFREE},
	{"free_work", SaberCheckerAPI::CK_KFREE},
	{"free_workqueue_attrs", SaberCheckerAPI::CK_KFREE},
	{"free_zbud_page", SaberCheckerAPI::CK_KFREE},
	{"free_zspage", SaberCheckerAPI::CK_KFREE},
	{"freed_request", SaberCheckerAPI::CK_KFREE},
	{"fsnotify_oldname_free", SaberCheckerAPI::CK_KFREE},
	{"ftrace_define_fields_ext4_free_blocks", SaberCheckerAPI::CK_KFREE},
	{"ftrace_define_fields_ext4_free_inode", SaberCheckerAPI::CK_KFREE},
	{"ftrace_define_fields_kmem_free", SaberCheckerAPI::CK_KFREE},
	{"ftrace_define_fields_mm_page_free", SaberCheckerAPI::CK_KFREE},
	{"ftrace_define_fields_mm_page_free_batched", SaberCheckerAPI::CK_KFREE},
	{"ftrace_define_fields_module_free", SaberCheckerAPI::CK_KFREE},
	{"ftrace_profile_free_filter", SaberCheckerAPI::CK_KFREE},
	{"fuse_file_free", SaberCheckerAPI::CK_KFREE},
	{"fuse_free_conn", SaberCheckerAPI::CK_KFREE},
	{"fuse_request_free", SaberCheckerAPI::CK_KFREE},
	{"fw_free_buf", SaberCheckerAPI::CK_KFREE},
	{"gen_pool_free", SaberCheckerAPI::CK_KFREE},
	{"get_default_free_blocks_flags", SaberCheckerAPI::CK_KFREE},
	{"gpio_free_array", SaberCheckerAPI::CK_KFREE},
	{"gpiochip_free_own_desc", SaberCheckerAPI::CK_KFREE},
	{"gpiod_free", SaberCheckerAPI::CK_KFREE},
	{"groups_free", SaberCheckerAPI::CK_KFREE},
	{"htab_map_free", SaberCheckerAPI::CK_KFREE},
	{"hugetlb_cgroup_css_free", SaberCheckerAPI::CK_KFREE},
	{"hugetlb_free_pgd_range", SaberCheckerAPI::CK_KFREE},
	{"hugetlbfs_dec_free_inodes", SaberCheckerAPI::CK_KFREE},
	{"hugetlbfs_inc_free_inodes", SaberCheckerAPI::CK_KFREE},
	{"icq_free_icq_rcu", SaberCheckerAPI::CK_KFREE},
	{"iint_free", SaberCheckerAPI::CK_KFREE},
	{"ima_file_free", SaberCheckerAPI::CK_KFREE},
	{"ima_free_atfm", SaberCheckerAPI::CK_KFREE},
	{"ima_free_pages", SaberCheckerAPI::CK_KFREE},
	{"ima_free_template_entry", SaberCheckerAPI::CK_KFREE},
	{"ima_free_tfm", SaberCheckerAPI::CK_KFREE},
	{"info_bdq_free", SaberCheckerAPI::CK_KFREE},
	{"info_idq_free", SaberCheckerAPI::CK_KFREE},
	{"inotify_free_event", SaberCheckerAPI::CK_KFREE},
	{"inotify_free_group_priv", SaberCheckerAPI::CK_KFREE},
	{"inotify_free_mark", SaberCheckerAPI::CK_KFREE},
	{"input_free_device", SaberCheckerAPI::CK_KFREE},
	{"integrity_inode_free", SaberCheckerAPI::CK_KFREE},
	{"intel_fake_agp_free_gatt_table", SaberCheckerAPI::CK_KFREE},
	{"intel_i810_free_by_type", SaberCheckerAPI::CK_KFREE},
	{"iommu_free", SaberCheckerAPI::CK_KFREE},
	{"ipc_free", SaberCheckerAPI::CK_KFREE},
	{"ipc_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"is_free_buddy_page", SaberCheckerAPI::CK_KFREE},
	{"is_hugepage_on_freelist", SaberCheckerAPI::CK_KFREE},
	{"is_page_cache_freeable", SaberCheckerAPI::CK_KFREE},
	{"isolate_freepages", SaberCheckerAPI::CK_KFREE},
	{"isolate_freepages_range", SaberCheckerAPI::CK_KFREE},
	{"jbd2_free", SaberCheckerAPI::CK_KFREE},
	{"jbd2_free_handle", SaberCheckerAPI::CK_KFREE},
	{"jbd2_free_inode", SaberCheckerAPI::CK_KFREE},
	{"jbd2_journal_free_reserved", SaberCheckerAPI::CK_KFREE},
	{"jbd2_journal_free_transaction", SaberCheckerAPI::CK_KFREE},
	{"journal_free_journal_head", SaberCheckerAPI::CK_KFREE},
	{"k_itimer_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"keyring_free_object", SaberCheckerAPI::CK_KFREE},
	{"keyring_free_preparse", SaberCheckerAPI::CK_KFREE},
	{"kfree", SaberCheckerAPI::CK_KFREE},
	{"kfree_hook", SaberCheckerAPI::CK_KFREE},
	{"kfree_skb", SaberCheckerAPI::CK_KFREE},
	{"__kfree_skb", SaberCheckerAPI::CK_KFREE},
	{"kimage_free", SaberCheckerAPI::CK_KFREE},
	{"kimage_free_extra_pages", SaberCheckerAPI::CK_KFREE},
	{"kimage_free_page_list", SaberCheckerAPI::CK_KFREE},
	{"kimage_free_pages", SaberCheckerAPI::CK_KFREE},
	{"kiocb_free", SaberCheckerAPI::CK_KFREE},
	{"kmem_cache_free", SaberCheckerAPI::CK_KFREE},
	{"kmemcheck_free_shadow", SaberCheckerAPI::CK_KFREE},
	{"kmemleak_free", SaberCheckerAPI::CK_KFREE},
	{"kmemleak_free_part", SaberCheckerAPI::CK_KFREE},
	{"kmemleak_free_percpu", SaberCheckerAPI::CK_KFREE},
	{"kmemleak_free_recursive", SaberCheckerAPI::CK_KFREE},
	{"kvfree", SaberCheckerAPI::CK_KFREE},
	{"kzfree", SaberCheckerAPI::CK_KFREE},
	{"ldm_frag_free", SaberCheckerAPI::CK_KFREE},
	{"ldm_free_vblks", SaberCheckerAPI::CK_KFREE},
	{"locks_free_lock", SaberCheckerAPI::CK_KFREE},
	{"maybe_kfree_parameter", SaberCheckerAPI::CK_KFREE},
	{"mb_buddy_mark_free", SaberCheckerAPI::CK_KFREE},
	{"mb_cache_entry_free", SaberCheckerAPI::CK_KFREE},
	{"mem_cgroup_css_free", SaberCheckerAPI::CK_KFREE},
	{"memcg_free_cache_params", SaberCheckerAPI::CK_KFREE},
	{"mm_free_pgd", SaberCheckerAPI::CK_KFREE},
	{"free_cache", SaberCheckerAPI::CK_KFREE},
	{"mnt_free_id", SaberCheckerAPI::CK_KFREE},
	{"module_unload_free", SaberCheckerAPI::CK_KFREE},
	{"mousedev_free", SaberCheckerAPI::CK_KFREE},
	{"mpi_free", SaberCheckerAPI::CK_KFREE},
	{"mpi_free_limb_space", SaberCheckerAPI::CK_KFREE},
	{"mpol_free_shared_policy", SaberCheckerAPI::CK_KFREE},
	{"msg_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"msrs_free", SaberCheckerAPI::CK_KFREE},
	{"num_free_chunks", SaberCheckerAPI::CK_KFREE},
	{"pageblock_free", SaberCheckerAPI::CK_KFREE},
	{"param_array_free", SaberCheckerAPI::CK_KFREE},
	{"param_free_charp", SaberCheckerAPI::CK_KFREE},
	{"paravirt_free_ldt", SaberCheckerAPI::CK_KFREE},
	{"parse_freebsd", SaberCheckerAPI::CK_KFREE},
	{"part_is_free", SaberCheckerAPI::CK_KFREE},
	{"pci_free_cap_save_buffers", SaberCheckerAPI::CK_KFREE},
	{"pci_free_dynids", SaberCheckerAPI::CK_KFREE},
	{"pci_free_resource_list", SaberCheckerAPI::CK_KFREE},
	{"pci_free_resources", SaberCheckerAPI::CK_KFREE},
	{"pciehp_free_irq", SaberCheckerAPI::CK_KFREE},
	{"pcpu_fc_free", SaberCheckerAPI::CK_KFREE},
	{"pcpu_free_alloc_info", SaberCheckerAPI::CK_KFREE},
	{"pcpu_free_chunk", SaberCheckerAPI::CK_KFREE},
	{"pcpu_free_vm_areas", SaberCheckerAPI::CK_KFREE},
	{"pcpu_mem_free", SaberCheckerAPI::CK_KFREE},
	{"percpu_ida_free", SaberCheckerAPI::CK_KFREE},
	{"percpu_ida_free_tags", SaberCheckerAPI::CK_KFREE},
	{"percpu_modfree", SaberCheckerAPI::CK_KFREE},
	{"perf_cgroup_css_free", SaberCheckerAPI::CK_KFREE},
	{"perf_event_free_filter", SaberCheckerAPI::CK_KFREE},
	{"perf_event_free_task", SaberCheckerAPI::CK_KFREE},
	{"pidlist_free", SaberCheckerAPI::CK_KFREE},
	{"pin_free_rcu", SaberCheckerAPI::CK_KFREE},
	{"pkcs7_free_message", SaberCheckerAPI::CK_KFREE},
	{"pkcs7_free_signed_info", SaberCheckerAPI::CK_KFREE},
	{"poll_freewait", SaberCheckerAPI::CK_KFREE},
	{"ptlock_free", SaberCheckerAPI::CK_KFREE},
	{"rb_free", SaberCheckerAPI::CK_KFREE},
	{"rb_free_cpu_buffer", SaberCheckerAPI::CK_KFREE},
	{"rb_free_rcu", SaberCheckerAPI::CK_KFREE},
	{"rc5t583_gpio_free", SaberCheckerAPI::CK_KFREE},
	{"rcu_free_old_probes", SaberCheckerAPI::CK_KFREE},
	{"rcu_free_pool", SaberCheckerAPI::CK_KFREE},
	{"rcu_free_pwq", SaberCheckerAPI::CK_KFREE},
	{"rcu_free_slab", SaberCheckerAPI::CK_KFREE},
	{"regmap_debugfs_free_dump_cache", SaberCheckerAPI::CK_KFREE},
	{"regmap_field_free", SaberCheckerAPI::CK_KFREE},
	{"regmap_mmio_free_context", SaberCheckerAPI::CK_KFREE},
	{"regulator_bulk_free", SaberCheckerAPI::CK_KFREE},
	{"regulator_ena_gpio_free", SaberCheckerAPI::CK_KFREE},
	{"relay_free_page_array", SaberCheckerAPI::CK_KFREE},
	{"release_freepages", SaberCheckerAPI::CK_KFREE},
	{"release_probes", SaberCheckerAPI::CK_KFREE},
	{"remove_free_dquot", SaberCheckerAPI::CK_KFREE},
	{"request_key_auth_free_preparse", SaberCheckerAPI::CK_KFREE},
	{"ring_buffer_free", SaberCheckerAPI::CK_KFREE},
	{"scsi_destroy_command_freelist", SaberCheckerAPI::CK_KFREE},
	{"scsi_free_host_cmd_pool", SaberCheckerAPI::CK_KFREE},
	{"scsi_free_host_dev", SaberCheckerAPI::CK_KFREE},
	{"scsi_free_sgtable", SaberCheckerAPI::CK_KFREE},
	{"scsi_mq_free_sgtables", SaberCheckerAPI::CK_KFREE},
	{"scsi_setup_command_freelist", SaberCheckerAPI::CK_KFREE},
	{"scsi_sg_free", SaberCheckerAPI::CK_KFREE},
	{"security_cred_free", SaberCheckerAPI::CK_KFREE},
	{"security_file_free", SaberCheckerAPI::CK_KFREE},
	{"security_inode_free", SaberCheckerAPI::CK_KFREE},
	{"security_key_free", SaberCheckerAPI::CK_KFREE},
	{"security_msg_msg_free", SaberCheckerAPI::CK_KFREE},
	{"security_msg_queue_free", SaberCheckerAPI::CK_KFREE},
	{"security_sb_free", SaberCheckerAPI::CK_KFREE},
	{"security_sem_free", SaberCheckerAPI::CK_KFREE},
	{"security_shm_free", SaberCheckerAPI::CK_KFREE},
	{"security_sk_free", SaberCheckerAPI::CK_KFREE},
	{"security_task_free", SaberCheckerAPI::CK_KFREE},
	{"security_tun_dev_free_security", SaberCheckerAPI::CK_KFREE},
	{"sem_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"serio_free_event", SaberCheckerAPI::CK_KFREE},
	{"set_buffer_freed", SaberCheckerAPI::CK_KFREE},
	{"set_freepage_migratetype", SaberCheckerAPI::CK_KFREE},
	{"sg_free_table", SaberCheckerAPI::CK_KFREE},
	{"sg_kfree", SaberCheckerAPI::CK_KFREE},
	{"shash_free_instance", SaberCheckerAPI::CK_KFREE},
	{"shm_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"shmem_free_inode", SaberCheckerAPI::CK_KFREE},
	{"sigqueue_free", SaberCheckerAPI::CK_KFREE},
	{"simple_xattrs_free", SaberCheckerAPI::CK_KFREE},
	{"skcipher_geniv_free", SaberCheckerAPI::CK_KFREE},
	{"sp_free", SaberCheckerAPI::CK_KFREE},
	{"split_free_page", SaberCheckerAPI::CK_KFREE},
	{"swap_entry_free", SaberCheckerAPI::CK_KFREE},
	{"task_numa_free", SaberCheckerAPI::CK_KFREE},
	{"task_will_free_mem", SaberCheckerAPI::CK_KFREE},
	{"taskstats_tgid_free", SaberCheckerAPI::CK_KFREE},
	{"tce_free", SaberCheckerAPI::CK_KFREE},
	{"testmgr_free_buf", SaberCheckerAPI::CK_KFREE},
	{"tlb_flush_mmu_free", SaberCheckerAPI::CK_KFREE},
	{"trace_ext4_free_blocks", SaberCheckerAPI::CK_KFREE},
	{"trace_ext4_free_inode", SaberCheckerAPI::CK_KFREE},
	{"trace_ext4_trim_all_free", SaberCheckerAPI::CK_KFREE},
	{"trace_kfree", SaberCheckerAPI::CK_KFREE},
	{"trace_kmem_cache_free", SaberCheckerAPI::CK_KFREE},
	{"trace_mm_page_free", SaberCheckerAPI::CK_KFREE},
	{"trace_mm_page_free_batched", SaberCheckerAPI::CK_KFREE},
	{"trace_module_free", SaberCheckerAPI::CK_KFREE},
	{"trace_sched_process_free", SaberCheckerAPI::CK_KFREE},
	{"traceprobe_free_probe_arg", SaberCheckerAPI::CK_KFREE},
	{"trigger_data_free", SaberCheckerAPI::CK_KFREE},
	{"trusted_rcu_free", SaberCheckerAPI::CK_KFREE},
	{"try_to_free_buffers", SaberCheckerAPI::CK_KFREE},
	{"try_to_free_mem_cgroup_pages", SaberCheckerAPI::CK_KFREE},
	{"try_to_free_pmd_page", SaberCheckerAPI::CK_KFREE},
	{"try_to_free_pte_page", SaberCheckerAPI::CK_KFREE},
	{"try_to_free_pud_page", SaberCheckerAPI::CK_KFREE},
	{"try_to_free_swap", SaberCheckerAPI::CK_KFREE},
	{"tty_buffer_free_all", SaberCheckerAPI::CK_KFREE},
	{"tty_free_file", SaberCheckerAPI::CK_KFREE},
	{"tty_free_termios", SaberCheckerAPI::CK_KFREE},
	{"tty_port_free_xmit_buf", SaberCheckerAPI::CK_KFREE},
	{"unusable_free_index", SaberCheckerAPI::CK_KFREE},
	{"uprobe_free_utask", SaberCheckerAPI::CK_KFREE},
	{"user_free_preparse", SaberCheckerAPI::CK_KFREE},
	{"vb_free", SaberCheckerAPI::CK_KFREE},
	{"vcs_poll_data_free", SaberCheckerAPI::CK_KFREE},
	{"vfree", SaberCheckerAPI::CK_KFREE},
	{"vp_free_vectors", SaberCheckerAPI::CK_KFREE},
	{"x509_free_certificate", SaberCheckerAPI::CK_KFREE},
	{"yama_task_free", SaberCheckerAPI::CK_KFREE},
	{"zbud_free", SaberCheckerAPI::CK_KFREE},
	{"zbud_zpool_free", SaberCheckerAPI::CK_KFREE},
	{"zone_init_free_lists", SaberCheckerAPI::CK_KFREE},
	{"zpool_free", SaberCheckerAPI::CK_KFREE},
	{"zs_free", SaberCheckerAPI::CK_KFREE},
	{"zs_zpool_free", SaberCheckerAPI::CK_KFREE},
	{"zswap_entry_cache_free", SaberCheckerAPI::CK_KFREE},
	{"zswap_free_entry", SaberCheckerAPI::CK_KFREE},
	{"__mpol_put", SaberCheckerAPI::CK_KFREE},
	{"__put_cred", SaberCheckerAPI::CK_KFREE},
	{"fput", SaberCheckerAPI::CK_KFREE},
	{"key_put", SaberCheckerAPI::CK_KFREE},
	{"destroy_super", SaberCheckerAPI::CK_KFREE},
	{"kobject_put", SaberCheckerAPI::CK_KFREE},
	{"mmdrop", SaberCheckerAPI::CK_KFREE},
	{"iput", SaberCheckerAPI::CK_KFREE},
	{"dput", SaberCheckerAPI::CK_KFREE},
	{"clear_nlink", SaberCheckerAPI::CK_KFREE},
	{"free_ldt_struct", SaberCheckerAPI::CK_KFREE},
	{"abort_creds", SaberCheckerAPI::CK_KFREE},
	{"put_group_info", SaberCheckerAPI::CK_KFREE},
	{"put_super", SaberCheckerAPI::CK_KFREE},

	{"spin_lock", SaberCheckerAPI::CK_KLOCK},
	{"spin_lock_bh", SaberCheckerAPI::CK_KLOCK},
	{"spin_lock_irqrestore", SaberCheckerAPI::CK_KLOCK},
	{"spin_lock_irqsave", SaberCheckerAPI::CK_KLOCK},
	{"raw_spin_lock", SaberCheckerAPI::CK_KLOCK},
	{"_raw_spin_lock", SaberCheckerAPI::CK_KLOCK},
	{"__raw_spin_lock", SaberCheckerAPI::CK_KLOCK},
	{"raw_spin_lock_irqrestore", SaberCheckerAPI::CK_KLOCK},
	{"raw_spin_lock_irqsave", SaberCheckerAPI::CK_KLOCK},
	{"_raw_spin_lock_irqsave", SaberCheckerAPI::CK_KLOCK},
	{"mutex_lock", SaberCheckerAPI::CK_KLOCK},
	{"read_lock", SaberCheckerAPI::CK_KLOCK},
	{"spin_lock_irq", SaberCheckerAPI::CK_KLOCK},

	{"spin_unlock", SaberCheckerAPI::CK_KUNLOCK},
	{"spin_unlock_bh", SaberCheckerAPI::CK_KUNLOCK},
	{"spin_unlock_irqrestore", SaberCheckerAPI::CK_KUNLOCK},
	{"spin_unlock_irqsave", SaberCheckerAPI::CK_KUNLOCK},
	{"raw_spin_unlock", SaberCheckerAPI::CK_KUNLOCK},
	{"_raw_spin_unlock", SaberCheckerAPI::CK_KUNLOCK},
	{"__raw_spin_unlock", SaberCheckerAPI::CK_KUNLOCK},
	{"raw_spin_unlock_irqsave", SaberCheckerAPI::CK_KUNLOCK},
	{"_raw_spin_unlock_irqsave", SaberCheckerAPI::CK_KUNLOCK},
	{"raw_spin_unlock_irqrestore", SaberCheckerAPI::CK_KUNLOCK},
	{"mutex_unlock", SaberCheckerAPI::CK_KUNLOCK},
	{"read_unlock", SaberCheckerAPI::CK_KUNLOCK},
	{"spin_unlock_irq", SaberCheckerAPI::CK_KUNLOCK},

	//This must be the last entry.
	{0, SaberCheckerAPI::CK_DUMMY}

};


/*!
 * initialize the map
 */
void SaberCheckerAPI::init() {
	set<CHECKER_TYPE> t_seen;
	CHECKER_TYPE prev_t= CK_DUMMY;
	t_seen.insert(CK_DUMMY);
	for(const ei_pair *p= ei_pairs; p->n; ++p) {
		if(p->t != prev_t) {
			//This will detect if you move an entry to another block
			//  but forget to change the type.
			if(t_seen.count(p->t)) {
				fputs(p->n, stderr);
				putc('\n', stderr);
				assert(!"ei_pairs not grouped by type");
			}
			t_seen.insert(p->t);
			prev_t= p->t;
		}
		if(tdAPIMap.count(p->n)) {
			fputs(p->n, stderr);
			putc('\n', stderr);
			assert(!"duplicate name in ei_pairs");
		}
		tdAPIMap[p->n]= p->t;
	}
}




